class Solution
{
public:
    int numberOfGoodSubarraySplits(vector<int> &nums)
    {
        int n = nums.size();

        int i = 0;
        while (i < n && nums[i] == 0)
        {
            ++i;
        }
        if (i == n)
        {
            return 0;
        }

        int end = n - 1;
        while (end >= 0 && nums[end] == 0)
        {
            --end;
        }

        int zeroCount = 0;
        long long result = 1;
        while (i <= end)
        {
            if (nums[i] == 0)
            {
                ++zeroCount;
            }
            else
            {
                result *= (zeroCount + 1);
                result %= 1'0000'0000'7;
                zeroCount = 0;
            }
            ++i;
        }
        return result;
    }
};